﻿
using System;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.IO;
using V82;
using V82.ОбщиеОбъекты;
using V82.СправочникиСсылка;
using V82.Справочники;//Менеджер;
using V82.ДокументыСсылка;
using V82.Перечисления;//Ссылка;
namespace V82.СправочникиТест
{
	public partial class Номенклатура: СправочникТест
	{

		public static void Создать1000()
		{
			var Старт = DateTime.Now;
			Console.WriteLine("--------------------------------------------------------------------");
			Console.WriteLine("Создание 1000 элементов справочника Номенклатура. Старт: " + Старт.ToString("dd.MM.yy HH:mm:ss.fff") + ".");
			for (var НомерЭлемента = 1;НомерЭлемента < 1000;НомерЭлемента++)
			{
				var Объект = V82.Справочники/*Менеджер*/.Номенклатура.СоздатьЭлемент();
				Объект.Код = ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,11);//НомерЭлемента;
				Объект.Наименование = ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(3,100);//"Наименование " + НомерЭлемента;

				Объект.Артикул = ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,25);
				Объект.НаименованиеПолное = ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,255);
				Объект.Весовой = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.ВесовойКоэффициентВхождения = ГенераторСлучайныхЧисел.Следующий(999999999);
				Объект.ВестиОперативныйУчетОстатковНЗП = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.ВестиПартионныйУчетПоСериям = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.ВестиУчетПоСериям = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.ВестиУчетПоСериямВНЗП = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.ВестиУчетПоХарактеристикам = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.ВидВоспроизводства = (V82.Перечисления/*Ссылка*/.ВидыВоспроизводстваНоменклатуры)ГенераторСлучайныхЧисел.СледующееПеречисление(typeof(V82.Перечисления/*Ссылка*/.ВидыВоспроизводстваНоменклатуры));
				Объект.ВидНоменклатуры = V82.Справочники/*Менеджер*/.ВидыНоменклатуры.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.ВидыНоменклатуры();
				Объект.ЕдиницаДляОтчетов = V82.Справочники/*Менеджер*/.ЕдиницыИзмерения.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.ЕдиницыИзмерения();
				Объект.ЕдиницаХраненияОстатков = V82.Справочники/*Менеджер*/.ЕдиницыИзмерения.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.ЕдиницыИзмерения();
				Объект.БазоваяЕдиницаИзмерения = V82.Справочники/*Менеджер*/.КлассификаторЕдиницИзмерения.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.КлассификаторЕдиницИзмерения();
				Объект.Набор = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.НазначениеИспользования = V82.Справочники/*Менеджер*/.НазначенияИспользования.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.НазначенияИспользования();
				Объект.СтавкаНДС = (V82.Перечисления/*Ссылка*/.СтавкиНДС)ГенераторСлучайныхЧисел.СледующееПеречисление(typeof(V82.Перечисления/*Ссылка*/.СтавкиНДС));
				Объект.Комментарий = ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,255);
				Объект.НоменклатурнаяГруппаЗатрат = V82.Справочники/*Менеджер*/.НоменклатурныеГруппы.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.НоменклатурныеГруппы();
				Объект.Услуга = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.ОсновнойПоставщик = V82.Справочники/*Менеджер*/.Контрагенты.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.Контрагенты();
				Объект.ОтветственныйМенеджерЗаПокупки = V82.Справочники/*Менеджер*/.Пользователи.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.Пользователи();
				Объект.НоменклатурнаяГруппа = V82.Справочники/*Менеджер*/.НоменклатурныеГруппы.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.НоменклатурныеГруппы();
				Объект.СтранаПроисхождения = V82.Справочники/*Менеджер*/.КлассификаторСтранМира.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.КлассификаторСтранМира();
				Объект.НомерГТД = V82.Справочники/*Менеджер*/.НомераГТД.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.НомераГТД();
				Объект.ТребуетсяВнешняяСертификация = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.ТребуетсяВнутренняяСертификация = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.СтатьяЗатрат = V82.Справочники/*Менеджер*/.СтатьиЗатрат.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.СтатьиЗатрат();
				Объект.ВестиСерийныеНомера = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.Комплект = ГенераторСлучайныхЧисел.СледующееБулево();
				Объект.НаправлениеВыпуска = (V82.Перечисления/*Ссылка*/.НаправленияВыпуска)ГенераторСлучайныхЧисел.СледующееПеречисление(typeof(V82.Перечисления/*Ссылка*/.НаправленияВыпуска));
				Объект.НаправлениеСписанияВыпущеннойПродукции = V82.Справочники/*Менеджер*/.НаправленияСписанияВыпущеннойПродукции.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.НаправленияСписанияВыпущеннойПродукции();
				Объект.ПорядокПрисвоенияСерийногоНомера = V82.Справочники/*Менеджер*/.ПорядокПрисвоенияСерийныхНомеров.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.ПорядокПрисвоенияСерийныхНомеров();
				Объект.ЦеноваяГруппа = V82.Справочники/*Менеджер*/.ЦеновыеГруппы.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.ЦеновыеГруппы();
				Объект.ОКП = V82.Справочники/*Менеджер*/.ОбщероссийскийКлассификаторПродукции.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.ОбщероссийскийКлассификаторПродукции();
				Объект.ЕдиницаИзмеренияМест = V82.Справочники/*Менеджер*/.ЕдиницыИзмерения.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.ЕдиницыИзмерения();
				Объект.ДополнительноеОписаниеНоменклатуры = ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,255);
				Объект.Производитель = V82.Справочники/*Менеджер*/.Контрагенты.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.Контрагенты();
				Объект.Импортер = V82.Справочники/*Менеджер*/.Контрагенты.НайтиПоКоду(ГенераторСлучайныхЧисел.СлучайноеРусскоеСлово(1,3)) ?? new V82.СправочникиСсылка.Контрагенты();

				Объект.Записать();
				Console.Write("Выполнено: " + НомерЭлемента*.1 + "%.");
				Console.CursorLeft = 0;
			}
			var Финиш = DateTime.Now;
			Console.WriteLine("Закончено " + Math.Round(((Финиш - Старт).TotalMilliseconds / 1000), 3).ToString() + " сек. Финиш: " + Финиш.ToString("dd.MM.yy HH:mm:ss.fff") + ".");
			Console.WriteLine("-------------------------------------------------------------------- -");
		}

		public static void Удалить1000()
		{
			foreach (var Ссылка in V82.Справочники/*Менеджер*/.Номенклатура.Выбрать())
			{
				var Объект = Ссылка.ПолучитьОбъект();
				Объект.Удалить();
			}
		}

		public static void СериализацияProtoBuf1000()
		{
			var Старт = DateTime.Now;
			Console.WriteLine("--------------------------------------------------------------------");
			Console.WriteLine("СериализацияProtoBuf 1000 элементов справочника Номенклатура. Старт: " + Старт.ToString("dd.MM.yy HH:mm:ss.fff") + ".");
			using (var Поток = new MemoryStream())
			{
				var НомерЭлемента = 0;
				foreach (var Ссылка in V82.Справочники/*Менеджер*/.Номенклатура.Выбрать())
				{
					НомерЭлемента++;
					Ссылка.СериализацияProtoBuf(Поток);
					Console.Write("Выполнено: " + НомерЭлемента*.1 + "%.");
					Console.CursorLeft = 0;
				}
			}
			var Финиш = DateTime.Now;
			Console.WriteLine("Закончено " + Math.Round(((Финиш - Старт).TotalMilliseconds / 1000), 3).ToString() + " сек. Финиш: " + Финиш.ToString("dd.MM.yy HH:mm:ss.fff") + ".");
			Console.WriteLine("-------------------------------------------------------------------- -");
		}

		public static void СериализацияJson1000()
		{
			var Старт = DateTime.Now;
			Console.WriteLine("--------------------------------------------------------------------");
			Console.WriteLine("СериализацияJson 1000 элементов справочника Номенклатура. Старт: " + Старт.ToString("dd.MM.yy HH:mm:ss.fff") + ".");
			var НомерЭлемента = 0;
			foreach (var Ссылка in V82.Справочники/*Менеджер*/.Номенклатура.Выбрать())
			{
				НомерЭлемента++;
				Ссылка.СериализацияJson();
				Console.Write("Выполнено: " + НомерЭлемента*.1 + "%.");
				Console.CursorLeft = 0;
			}
			var Финиш = DateTime.Now;
			Console.WriteLine("Закончено " + Math.Round(((Финиш - Старт).TotalMilliseconds / 1000), 3).ToString() + " сек. Финиш: " + Финиш.ToString("dd.MM.yy HH:mm:ss.fff") + ".");
			Console.WriteLine("-------------------------------------------------------------------- -");
		}
	}
}